package br.com.nemesis.controle;

import br.com.nemesis.dao.BairroDAO;
import br.com.nemesis.dao.CidadeDAO;
import br.com.nemesis.excecao.PersistenciaExcecao;
import br.com.nemesis.jsf.util.FacesUtil;
import br.com.nemesis.modelo.Bairro;
import br.com.nemesis.modelo.Cidade;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "bairroEditarControle")
@RequestScoped
public class BairroEditarControle  implements IEditar<Bairro>{

    private Long id;
    private Cidade cidade;
    private String nome;
    private Bairro objeto;

    public String salvar() {
        try {
            BairroDAO bairroDAO = new BairroDAO();
            if (objeto.getId() == null) {
                bairroDAO.salvar(objeto);
            } else {
                bairroDAO.alterar(objeto);
            }
            bairroDAO = null;
            FacesUtil.msgInformativa("Informação salva com sucesso.");
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return "/bairro/listar.nms?faces-redirect=true";
    }

    public String retornar() {
        return "/bairro/listar.nms?faces-redirect=true";
    }

    public String remover() {
        try {
            BairroDAO bairroDAO = new BairroDAO();
            bairroDAO.remover(objeto);
            bairroDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return "/bairro/listar.nms?faces-redirect=true";
    }

    public Bairro getObjeto() {
        if(this.objeto==null){
            this.objeto = new Bairro();
        }
        return objeto;
    }

    public void setObjeto(Bairro objeto) {
        this.objeto = objeto;
    }

    public Cidade getCidade() {
        if(cidade==null){
            cidade = new Cidade();
        }
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

    public List<Cidade> getCidades(){
        List<Cidade> cidades = null;
        try {
            CidadeDAO cidadeDAO = new CidadeDAO();
            cidades = cidadeDAO.listar();
            cidadeDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return cidades;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        try {
            BairroDAO bairroDAO = new BairroDAO();
            this.objeto = bairroDAO.buscar(id);
            bairroDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

}